import { getToken, removeToken, setToken } from '@/utils/token'
import { Notify } from 'vant'
import router from '@/router'
import { refreshTokenAPI } from '@/api'
// 对axios进行二次封装

import axios from 'axios'
// axios.defaults.baseURL = 'http://toutiao.itheima.net'// 基地址
axios.defaults.baseURL = 'http://geek.itheima.net'// 基地址
axios.defaults.timeout = 8000
// 拦截器统一判断http状态码
// 拦截器改请求头

// 添加请求拦截器
axios.interceptors.request.use(function (config) {
  // 在发送请求之前做些什么
  if (config.headers.Authorization === undefined) {
    config.headers.Authorization = `Bearer ${getToken()}`
  }

  return config
}, function (error) {
  //   需要关闭一级面板
  // 对请求错误做些什么
  return Promise.reject(error)
})

// 添加响应拦截器
axios.interceptors.response.use(function (response) {
  // 对响应数据做点什么
  return response
}, async function (error) {
  if (error.response.status === 401) {
    // 危险通知
    // Notify({ type: 'danger', message: '通知内容' })
    removeToken()// 清除token
    // 1.token到期自己再重登
    // router.replace('/login')
    // 2.自动续签token
    const res = await refreshTokenAPI()
    console.log(res)
    setToken(res.data.data.token)
    error.config.headers.Authorization = 'Bearer ' + res.data.data.token
    return axios(error.config)
  } else if (error.response.status === 500 && error.config.url === '/v1_0/authorizations') {
    removeToken()
    localStorage.removeItem('refresh_token')
    Notify({ type: 'danger', message: '重新登录' })
    console.log(router)
    router.replace({
      path: '/login',
      query: {
        pa: router.currentRoute.fullPath
      }

    })
  }

  // 对响应错误做点什么
  return Promise.reject(error)
})

export default axios
